# 该文件是 接口基础 文件，封装了以下方法：
# send()：发送requests请求
# my_jsonpath()：使用jsonpath在目标体中，根据匹配规则，获取数据
# get_union_id()：从唯一识别码中截取部分字段，用作部分id
import string
import uuid


import jsonpath
import requests
from faker.generator import random

from HomeWork_Interface_WeWorkApi_Tag_with_PO.api_object.utils.log_util import logger


class BaseApi:
    BaseUrl = "https://qyapi.weixin.qq.com/cgi-bin/"

    #  不定长的关键字传参：**kwargs（函数未定义的关键字参数，会被kwargs接收）
    def send(self,method, url, **kwargs):
        # **kwargs  针对关键字的解包, 用法举例为 kwargs_demo.api
        '''
        发起请求，使用哪个工具去发起可被替换
        '''
        # 拼接url
        url = self.BaseUrl + url

        logger.info(f"接口请求操作，请求的url为：{url}")
        logger.info(f"接口请求操作，请求的参数为：{kwargs}")
        logger.info(f"接口请求操作，请求的params为：{kwargs.get('params')}")

        # 调用 requests工具发起接口请求
        return requests.request(method=method,url=url,**kwargs)

        logger.info(f"接口请求后，返回的参数为：{res.text}")

    def my_jsonpath(self,json_boj,exp):
        # 使用jsonpath取出json体中的某个字段,(目标数据体，匹配规则)
        # 通过jsonpath获取所有的id,并返回
        return jsonpath.jsonpath(json_boj,exp)

    def get_union_id1(self):
        # UUID 是 通用唯一识别码（Universally Unique Identifier）的缩写
        # uuid值是唯一的固定长度的数字和字符串（e5f98a2e-d149-4513-bd32-f6bb2f7262df），由 - 分割，这里只需要取第一段数字即可
        # str(uuid.uuid4())将uuid值转化为字符串(uuid4是根据随机数产生uuid)，
        # .split("-")以“-”分割字符串，然后取分割后的第一段
        _id = str(uuid.uuid4()).split("-")[0]
        print("生成的uuid："+_id)
        return _id

    def get_union_id2(self):

        num = string.ascii_letters
        _id = "".join(random.sample(num, 4))
        print(f"生成的随机数：{_id}")
        return _id


